const User = require('../models/user');
var bcrypt = require('bcrypt');
var SALT_WORK_FSCTOR = 10; // 计算强度,越大破解越困难
//已登录
exports.layin = function (req, res) {
    var _user = req.session.user;
    res.send(_user);
};

//退出登录
exports.layout = function (req, res) {
    delete req.session.user;
    var _user = req.session.user;
    //delete app.locals.user; // 删除全局变量user,否则点击退出登录,页面无变化
    res.send(_user);
};

//注册
exports.Register = function (req, res) {
    var _user = req.body.data;
    var username = _user.username;
    User.findOne({
        username: username
    },
        function (err, user) {
            if (err) {
                return console.log(err);
            }
            if (user) {
                return res.send('用户已存在');
            } else {
                var user = new User(_user);
                user.save(function (err, user) {
                    if (err) {
                        console.log(err);
                        return res.send('注册失败')
                    }
                    console.log('注册成功' + user);
                    return res.send('注册成功')
                });
            }
        });
};

//登录
exports.login = function (req, res) {
    var _user = req.body.data;
    // var role = _user.role;
    var username = _user.username;
    var password = _user.password;

    User.findOne({
        username: username
    }, function (err, user) {
        if (err) {
            return console.log(err);
        }
        if (!user) {
            console.log('这里')
            return res.send('用户不存在');

        }
        if (user.role === 10) {
            user.comparePassword(password, function (err, isMatch) {
                if (err) {
                    return console.log(err);
                }
                if (isMatch) {
                    req.session.user = user; // 用户名存入session中
                    console.log('登录成功' + user);
                    return res.send('登录成功')
                } else {
                    console.log('登录失败');
                    return res.send('登录失败')
                }
            });
        } else if (user.checkO === 0 && user.role === 20) {
            user.comparePassword(password, function (err, isMatch) {
                if (err) {
                    return console.log(err);
                }
                if (isMatch) {
                    req.session.user = user;
                    console.log('登录成功');
                    return res.send('请进行组织认证')
                } else {
                    console.log('登录失败');
                    return res.send('登录失败')
                }
            });

        } else if (user.checkO === 1 && user.role === 20) {
            user.comparePassword(password, function (err, isMatch) {
                if (err) {
                    return console.log(err);
                }
                if (isMatch) {
                    req.session.user = user; // 用户名存入session中
                    console.log('登录成功' + user);
                    return res.send('认证组织登录成功')
                } else {
                    console.log('登录失败');
                    return res.send('登录失败')
                }
            });
        } else if (user.role === 30) {
            user.comparePassword(password, function (err, isMatch) {
                if (err) {
                    return console.log(err);
                }
                if (isMatch) {
                    req.session.user = user; // 用户名存入session中
                    console.log('登录成功' + user);
                    return res.send('管理员登录成功')
                    console.log('登录成功' + user);
                    return res.send('登录成功')
                } else {
                    console.log('登录失败');
                    return res.send('登录失败')
                }
            });
        }

    });
};
//忘记密码，信息匹配，更新密码
exports.findPsw = function (req, res) {
    var _user = req.body.data;
    var username = _user.userName;
    var phone = _user.phone;
    var _password = _user.password;

    bcrypt.genSalt(SALT_WORK_FSCTOR, function (err, salt) {
        if (err) {
            return next(err);
        }

        bcrypt.hash(_password, salt, function (err, hash) {
            if (err) {
                return next(err);
            }

            _password = hash;
            User.findOne({
                username: username,
                phone: phone
            }, function (err, result) {
                if (err) {
                    return console.log(err);
                }
                if (!result) {
                    console.log('信息错误');
                    return res.send('信息错误');
                }
                if (result) {
                    User.update({}, {
                        "$set": {
                            password: _password,
                            updateAt: Date.now()
                        }
                    }, function (err, user) {
                        if (err) {
                            return console.log(err);
                        }
                        if (user) {
                            console.log('新密码设置成功');
                            return res.send('新密码设置成功');
                        } else {
                            console.log('新密码设置失败');
                            return res.send('信息错误');
                        }
                    })
                }
            });

        })
    });
};
//获取用户信息
exports.getUserMsg = function (req, res) {
    var _user = req.session.user;
    var username = _user.username;

    User.findOne({
        username: username
    }, function (err, user) {
        if (err) {
            return console.log(err);
        }
        if (user) {
            console.log(user);
            return res.send(user)
        } else {
            return console.log(err);
        }
    })
};
//修改用户信息
//修改昵称
exports.resetName = function (req, res) {
    var name = req.body.name;
    var _user = req.session.user;
    var username = _user.username;

    User.update({
        username: username
    }, {
            '$set': {
                name: name,
                updateAt: Date.now()
            }
        }, function (err, user) {
            if (err) {
                return console.log(err);
            }
            if (user) {
                console.log('修改成功');
                return res.send('修改成功');
            } else {
                console.log(err);
            }
        });
};
//修改手机号
exports.resetPhone = function (req, res) {
    var phone = req.body.phone;
    var _user = req.session.user;
    var username = _user.username;

    User.update({
        username: username
    }, {
            '$set': {
                phone: phone,
                updateAt: Date.now()
            }
        }, function (err, user) {
            if (err) {
                return console.log(err);
            }
            if (user) {
                console.log('修改成功');
                return res.send('修改成功');
            } else {
                console.log(err);
            }
        });
};
//修改头像 
exports.setAvatar = function (req, res) {
    let pic_url = req.body.pic_url
    var _user = req.session.user;
    var username = _user.username;
    User.update({
        username: username
    }, {
            "$set": {
                avatar: pic_url
            }
        }, function (err, user) {
            if (err) {
                return console.log(err);

            }
            if (user) {
                console.log('修改成功')
                return res.send('修改成功');
            } else {
                console.log(err)
            }
        })
}
//组织申请认证
exports.Renzheng = function (req, res) {
    var _data = req.body.data;
    var Zname = _data.Zname;
    var number = _data.number;
    var idcard = _data.idcard
    _user = req.session.user
    id = _user._id
    User.findOne({
        "renzhen.number": number
    }, function (err, result) {
        if (err) {
            return console.log(err);
        }
        if (result) {
            return res.send("证件已被注册");
        } else {
            User.update({
                _id: id
            }, {
                    '$set': {
                        renzheng: {
                            status: 1,
                            number: number,
                            Zname: Zname,
                            idcard: idcard
                        }
                    }
                }, function (err, user) {
                    if (err) {
                        return console.log(err);
                    }
                    if (user) {
                        delete req.session.user;
                        console.log("申请成功");
                        return res.send("申请成功");

                    } else {
                        console.log("申请失败");
                        return res.send("申请失败");
                    }
                })

        }

    })

}

//获取申请审核信息
exports.getSHMsg = function (req, res) {


    User.find({
        "renzheng.status": 1
    }, function (err, user) {
        if (err) {
            return console.log(err);
        }
        if (user) {
            console.log(user);
            return res.send(user)
        } else {
            return console.log(err);
        }
    })
};
//组织审核通过
exports.Pass = function (req, res) {
    let _data = req.body.data
    let id = _data._id
    let renzheng = _data.renzheng


    User.update({
        _id: id
    }, {
            '$set': {
                checkO: 1,
                renzheng: {
                    status: 3,
                    Zname: renzheng.Zname,
                    idcard: renzheng.idcard,
                    number: renzheng.number
                }
            }
        }, function (err, user) {
            if (err) {
                return console.log(err);
            }
            if (user) {
                console.log('审核通过');
                return res.send('审核通过');
            } else {
                console.log(err);
            }
        });
};


//组织审核不通过
exports.noPass = function (req, res) {
    let _data = req.body.data
    let id = _data._id
    let renzheng = _data.renzheng

    User.update({ _id: id }, { '$set': { renzheng: { status: 2, Zname: renzheng.Zname, idcard: renzheng.idcard, number: renzheng.number } } }, function (err, user) {
        if (err) {
            return console.log(err);
        }
        if (user) {
            console.log('审核不通过');
            return res.send('审核不通过');
        } else {
            console.log(err);
        }
    });
};
//用户管理
//获取所有用户信息
exports.getallUser = function (req, res) {
    User.find({
        role: 10
    }, function (err, user) {
        if (err) {
            return console.log(err);
        }
        if (user) {
            console.log(user);
            return res.send(user)
        } else {
            return console.log(err);
        }
    })
};
//获取所有组织信息
exports.getallO = function (req, res) {
    User.find({
        role: 20
    }, function (err, user) {
        if (err) {
            return console.log(err);
        }
        if (user) {
            console.log(user);
            return res.send(user)
        } else {
            return console.log(err);
        }
    })
};
//删除用户
exports.delete = function (req, res) {
    let id = req.body.id
    if (id) {
        User.remove({ _id: id }, function (err, delResult) {
            if (err) {
                return console.log(err)
            } else {
                console.log("删除成功");
                res.send('删除成功')
            }
        })
    }
}
//获取用户时长
exports.getusertime = function (req, res) {
    let username=req.body.data
    User.find({
        username:username
    }, function (err, user) {
        if (err) {
            return console.log(err);
        }
        if (user) {
            console.log(user);
            return res.send(user)
        } else {
            return console.log(err);
        }
    })
};
//记录时长
exports.signout = function (req, res) {
    let data=req.body
    let time=data.time
    let username =data.un

    User.update({
        username: username
    }, {
            '$set': {
                time: time
                
            }
        }, function (err, user) {
            if (err) {
                return console.log(err);
            }
            if (user) {
                console.log('签退成功');
                return res.send('签退成功');
            } else {
                console.log(err);
            }
        });
};
//midware for user 中间件
//登录判断
exports.signinRequired = function (req, res, next) {
    var user = req.session.user

    if (!user) {
        return res.send('未登录')
    }
    else {
        res.send(user)
    }
}